package logica.pisos;

import logica.coleccionables.Coleccionable;
import logica.obstaculos.Obstaculo;
import logica.premios.Premio;

public abstract class PisoNoTransitable extends Piso {

	/**
	 * Constructor de la clase PisoNoTransitable. 
	 * @param f representa el índice de fila.
	 * @param c	representa el índice de columna.
	 */
	public PisoNoTransitable(int f, int c) {
		super(f, c);
	}

	/**
	 * Si se le dispara a un piso no transitable, este disparo no le afecta en lo 
	 * absoluto. 
	 */
	public void dispararPiso() {
		
	}

	/**
	 * Al ser un piso no transitable esta operación siempre retorna false.
	 */
	public boolean puedoPasar() {
		return false;
	}
	
	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación siempre retorna false. 
	 */
	public  boolean tieneObstaculo(){
		return false;
	}
	
	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación siempre retorna false. 
	 */
	public  boolean tieneColeccionable(){
		return false;
	}
	
	/**
	 * Retorna 0, aunque en realidad esta operación
	 *  carece de sentido para los pisos no transitables.
	 */
	public int consumoCombustible(){
		return 0;
	}
	
	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación siempre retorna null. 
	 */
	public  Premio proveerPremio(){
		return null;
	}

	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación siempre retorna null. 
	 */
	public Coleccionable proveerColeccionable() {
		return null;
	}

	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación siempre retorna false. 
	 */
	public boolean tienePremio() {
		return false;
	}

	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación no tiene efecto alguno. 
	 */
	public void colocarPremio(Premio p) {
		
	}

	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación no tiene efecto alguno. 
	 */
	public boolean colocarColeccionable(Coleccionable c) {
		return false;
	}

	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación no tiene efecto alguno. 
	 */
	public void colocarObstaculo(Obstaculo o) {

	}

	/**
	 * Los piso no transitables no pueden tener objetos sobre ellos, 
	 * esta operación siempre retorna false. 
	 */
	public boolean tieneAlgo() {
		return false;
	}

}
